Virtualized storage systems offer clients access to multiple physical storage devices as if they comprise a single logical volume. Some storage systems function in a distributed manner where clients access physical storage devices directly without requiring dedicated management servers. Zetera Corporation's Z-SAN™ technology represents one such implementation that allows clients to directly interact with physical storage devices.
The virtual storage system should provide clients robust access to data storage. A system can be considered robust if multiple clients are able to share access to the system when the system dynamically changes. Furthermore, the system should allow clients to function independent of each other and should also allow the physical storage devices to function independent of each other. Independent clients are most efficient when they can adapt to changes in the system without requiring information from other clients. For example, two clients sharing a logical volume in the virtual storage system could have different views of the logical volume. Sometimes one client could see a physical storage device associated with the logical volume while the other client might not see the same physical device; however, the logical volume could still be useful to both clients. If the logical volume comprises redundant data on different physical devices, then both clients could still access the logical volume for read access while write accesses might require restrictions to prevent the data becoming unsynchronized.
Clients should have an ability to discover elements of the virtual storage system where elements include logical devices, physical storage devices, partitions, proxies, services, or other components of the virtual storage system. Discovery of virtual storage system elements is described in co-owned U.S. patent application having Ser. No. 11/205,895 titled “Disaggregated Resources and Access Methods” filed on Aug. 16, 2005, herein incorporated by reference in its entirety. The referenced application describes aspects of discovering maps of logical devices including virtual storage systems. The maps can also change as the virtual storage system changes. In conjunction with discovering maps of virtual storage systems, the virtual storage system should also provide a method for generating storage commands in the dynamic environment, especially where clients or devices could appear or disappear without notice. High-level storage commands associated with a logical volume might not necessarily change as the virtual storage system or logical volume changes because changes occur below the volume level view of the virtual storage system. However, the low-level storage commands targeting physical devices are more likely to change to reflect updates of the system. These and other issues need to be addressed in the contemplated dynamic environments.
A preferred solution for generating storage commands should offer the following capabilities:                Command generation should handle scenarios where clients loose visibility to portions of a shared storage area while other clients do not.        Clients should be able to access a data set that is coherent even though parts of a logical volume storing the data set are missing; as in the case of lost physical devices mirroring some of the data.        
The system should scale to larger deployments having a larger number of clients or storage devices without necessitating introduction of extra equipment to manage the storage services.                Commands should be generated in a manner that supports a heterogeneous mix of storage group types associated with a logical volume including RAID groups.        The command generating system should be independent of the command transport and work in multiple storage environments including environments that employ standard protocols or proprietary protocols.        
Others have addressed various aspects of virtualized storage including handling changes in a logical volume within a dynamic environment. For example, U.S. Pat. No. 6,732,171 titled “Distributed network system with virtualization” and U.S. Patent application number 2005/00144199 also titled “Distributed network system with virtualization” teach storage virtualization through the use of storage configuration identifiers stored on storage servers and management servers. The identifiers are timestamps exchanged between application clients and a storage system to indicate when a change in a storage configuration or allocation within the storage system has taken place. Application clients can then update their view of the storage system when an identifier changes. However, these references do not teach a how a storage system should generate commands through command handlers associated with the type of storage areas in the storage system.
In addition to the above references, the following references reflect varied approaches to creating maps for virtual storage systems associated with various storage media: U.S. pending patent applications 2005/0270856, 2005/0246401, 2003/0172157, 2003/0023811; and issued U.S. Pat. Nos. 6,775,673, 6,775,672, 6,772,161, 6,732,230, 5,758,050, and 5,129,088. Although these references address the specific issues for which they are intended, they do not address generating storage commands using a map of a logical volume built as a function of storage group types composing the logical volume. In some cases, the references describe commands or commands sets, but still do not teach how to generate the commands.
Thus, there remains a considerable need for methods and apparatus in virtualized storage that are able to generate storage commands as the storage environment changes.